# 遍历字典
user = {'username':'冰冰','age':18,'sex':'女'}
for i in user:
    print(i,user[i])

#     username 冰冰
# age 18
# sex 女
# >>>

# range:序列生成器
# range(10) 
# [0,1,2,3,4,5,6,7,8,9]

# for i in range(10):
#     print(i)
# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9

# for i in range(1,10,2):   1是开始，10是结束，2是步长
#     print(i)
# 1
# 3
# 5
# 7
# 9

# while:条件成立，一直循环，否则退出
# a = 10
# while a >1:
#     print(a)
#     a = a - 1  

# break终止循环

# a = 10
# while a >1:
#     print(a)
#     break
    
# continue 跳过本次循环
# a = 10
# while a >1:
#     continue
#     print(a)

# 请计算100以内的偶数的和
# sum = 0
# for i in range(100):
#     if i%2 == 0:
#         sum = sum + i
# print(sum)

# 使用for循环打印1-2+3-4+5-6..+99的结果
# sum = 0
# for i in range(100):
#     if i % 2 == 0:
#         sum = sum - i
#     else:
#         sum = sum + i
# print(sum)
# >>> print(sum)
# 50
# >>>

# # 方法
# 公共的代码，封装成一个方法
# def compute_nums(求和)(n):
#     sum = 0
#     for i in range(n):
#         if i % 2 == 0:
#             sum = sum + i
#     return sum

# a = compute_nums(1000)
# print(a)

# b = compute_nums(100)
# print(b)

# # 小写英文单词，单词与单词之间用下划线隔开，方法名字尽量有意义

# 参数：s1,s2..或者a1,a2....
# def add(s1,s2,s3):
#     return s1 + s2 + s3
# a = add(1,2,3)
# print(a)

# 类：可以封装多个方法的东西：面向对象
# 
class Person():  #class是固定的写法,类名首字母大学

# # 成员变量(实例变量)：类中的变量
    name  = '你爹' 
    age = 27

# # 成员方法(实例方法)：类中的方法
#     def sex(self):     #表示定义了一个名为sex的实例方法，方法是所有实例都共用的
# #                       实际上就是一个稍微特殊点的函数（方法的第一个参数必须为self）
#         print("人可以吃饭")

#     def drink(self):
#         print("人可以和谁")
# #       
    
# # 实例化类:调用类
# # person() 实例化类，实例化可以得到一个实例化对象
# person = person()
# print(person.name)#实例化变量
# person.sex()#实例化方法
# person.drink()



class Person():
    name  = '你爹' 
    age = 27
    def sex(self):  #调用的时候不用传参，self是一个固定的格式 ，参数可以传任意数据类型，
                    #参数可以有默认值，可以有一个或者多个的，参数是方法的私有变量 
                   
        print("人可以吃饭")

    def drink(self,sth):
        print("人可以和谁{}".format(sth))
        return"123"
        
person = Person()
print(person.name)
person.sex()
a = person.drink("美女")
print(a)

class Cat:           #实例本身，类中引用变量和方法，
                    # self.name = 'xxx'name成员变量有就是修改，没有就是新增
    name = 'tom'
    sex = 'famle'

    def talk(self):
        self.age = 6 #新增成员变量age
        self.name = '大表哥'#修改变量name为大表哥
        print("{}:喵喵喵".format(self.name))
cat = Cat() 
cat.talk()


# >>> cat = Cat()       从上到下，从左到右，从里到外
# >>> cat.talk()
# tom:喵喵喵

class Cat:           #实例本身，类中引用变量和方法，
                    # self.name = 'xxx'name成员变量有就是修改，没有就是新增
    name = 'tom'
    sex = 'famle'

    def talk(self):
        self.age = 6 #新增成员变量age
        self.name = '大表哥'#修改变量name为大表哥
        print("{}:喵喵喵".format(self.name))

    def run(self):   #调用成员方法
        print("假老练叫救兵去了")
        self.talk()

cat = Cat() 
cat.talk()
print(cat.age)
cat.run()

# ...         self.talk()
...
# >>> cat = Cat() 
# >>> cat.talk()
# 大表哥:喵喵喵
# >>> print(cat.age)
# 6
# >>> cat.run()
# 假老练叫救兵去了
# 大表哥:喵喵喵
# >>>

# 类的内置方法(双下划线) ：_init_    构造方法
    #                                实例化类的时候自动调用
    #                                成员变量初始化
class Test():
        def __init__(self):
            print('123') 
Test()

#初始化（）
class Test():
    name= 'tom'
        def __init__(self,n):
            self.name = n #给name变量赋值，初始化
            print('123') 

    Test('大表哥')









# 类的继承
# class 开始送():
#     name = 'tencent'
#     money ="100万"

#     def company(self):
#         print("i have tenctnt")

# class son(开始送):
#     name = "shabi"

# son = son()
# print(son.money)
# son.company()
